<?php
/**
* 为引用的页面提供一个通用对话框，可用于从其它页面选择数据。
*
* 在其它view中引用的方法：
*   $this->render('//common/dialog')
*
* 可通过 commonDialog() 函数显示对话框:
* function commonDialog(src, optinos, callback)
*   src         要显示的URL
*   options     对话框选项
*   callback    确定时回传结果的回调函数 function(result)，
*               结果由显示的页面保存在 window.dialogResult 上
*/
use yii\helpers\Url;
use yii\helpers\Html;

// 引入 layui 文件
\backend\assets\LayuiAsset::register($this);
?>
<script>
    <?php $this->beginBlock('common-dialog-js') ?>
    layui.use(['layer'], function(){
        var layer = layui.layer;

        /**
         *  @brief 公共对话框函数，使用对话框打开指定页面，然后通过回调函数返回页面中选择的数据，
         *  约定：页面返回数据放在 window.dialogResult
         *
         *  @param src      URL                 指定要打开的页面链接
         *  @param options  object              对话框选项
         *  @param callback function(result)    在点确定时返回并传回数据，有可能空
         *  @return 对话框打开失败时返回false
         *
         *  @details 参考 layui.layer.open()
         */
        window.commonDialog=function(src, options, callback){
            if(typeof(src)!='string') return false;

            // 默认选项
            var config = {
                type: 2,                    // iframe弹出框类型
                skin : 'layui-layer-molv',  // 对话框样式
                title: '',                  // 窗口标题
                area: ['700px', '450px'],   // 对话框宽高
                fixed: false,               // 位置是否固定不可移动
                maxmin: true,               // 是否可最大最小化
                content: src,               // 内容链接
                btn: ['确定','取消'],       // 对话框按钮
                yes: function(index, layero){   // 确定按钮事件
                    if(typeof(callback)=='function') {
                        // 从iframe页取要返回的数据，约定放在 window.dialogResult
                        var result = layero.find('iframe').get(0).contentWindow.dialogResult;
                        if(typeof(result)=='undefined') result=null;
                        callback.call(this, result);
                    }
                    layer.close(index);  // 关闭对话框
                }
            };

            // 应用选项参数
            if(typeof(options)=='object'){
                config = $.extend(config, options);
            }

            // 打开对话框
            layer.open(config);
        };
    });
    <?php $this->endBlock(); ?>
</script>
<?php $this->registerJs($this->blocks['common-dialog-js']);?>